package br.webchild.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.DateDisplayFormat;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.DateTimeItem;
import com.smartgwt.client.widgets.form.fields.PasswordItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.client.widgets.tab.Tab;
import com.smartgwt.client.widgets.tab.TabSet;
import com.smartgwt.client.widgets.toolbar.ToolStrip;
import com.smartgwt.client.widgets.toolbar.ToolStripButton;

public class Usuario extends Window {
	private Tab abaCadastro;
	private Tab abaConsulta;
	private Tab abaRelatorio;
	private TextItem tI_Codigo;
	private TextItem tI_Nome;
	private SelectItem tI_NivelAcesso;
	private SelectItem tI_TipoUsuario;
	private TextItem tI_CodUsuario;
	private TextItem dti_data_cad;
	private TextItem ti_codigo_pes;
	private TextItem ti_nome_pes;
	private DateTimeItem dti_data_pes;
	private PasswordItem tI_Senha;
	private PasswordItem tI_confSenha;
	private final UsiarioServicoAsync usuarioServico = GWT.create(UsiarioServico.class);
	final AsyncCallback<Boolean> resposta = new AsyncCallback<Boolean>(){
		@Override
		public void onFailure(Throwable caught) {
			SC.say("erro no servidor...");
		}
		@Override
		public void onSuccess(Boolean result) {
			SC.say("Gravado com Sucesso!!!");
		}
	};
					
	
	public Usuario() {

		this.setTitle("Usu&aacute;rio");
		setSize("700px", "520px");
		this.setShowMinimizeButton(false);
		this.setIsModal(true);
		this.centerInPage();
		this.setHeaderIcon("/imagens/usuario.png");

		final java.sql.Date data = new java.sql.Date(System.currentTimeMillis()); // DATA ATUAL
		TabSet tabelaAbas = new TabSet();
		tabelaAbas.setHeight("100%");

		// *****************ABA CADASTRO******************
		abaCadastro = new Tab("Cadastro");

		VLayout vl_cadastro = new VLayout();
		vl_cadastro.setHeight("168px");

		ToolStrip menu_Cadastro = new ToolStrip();
		menu_Cadastro.setWidth("100%");

		ToolStripButton btn_Gravar = new ToolStripButton("Salvar");
		btn_Gravar.setIcon("/imagens/save_add.png");
		menu_Cadastro.addButton(btn_Gravar);

		ToolStripButton btn_Limpar = new ToolStripButton("Limpar");
		btn_Limpar.setIcon("/imagens/clear.png");
		menu_Cadastro.addButton(btn_Limpar);

		vl_cadastro.addMember(menu_Cadastro);

		DynamicForm form_cadastro = new DynamicForm();
		form_cadastro.setSize("551px", "404px");
		// form_cadastro.setTitleOrientation(TitleOrientation.TOP);

		tI_Codigo = new TextItem();
		tI_Codigo.setTitle("Codigo");

		tI_Nome = new TextItem();
		tI_Nome.setTitle("Nome");

		tI_Senha = new PasswordItem();
		tI_Senha.setTitle("Senha");

		tI_confSenha = new PasswordItem();
		tI_confSenha.setTitle("Confirme Senha");

		tI_NivelAcesso = new SelectItem();
		tI_NivelAcesso.setTitle("Nivel Acesso");
		tI_NivelAcesso.setValueMap("BAIXO", "MEDIO", "ALTO");
		
		tI_TipoUsuario = new SelectItem();
		tI_TipoUsuario.setTitle("Tipo Usuario");
		tI_TipoUsuario.setValueMap("FUNCIONARIO", "MEDICO");

		dti_data_cad = new TextItem();
		dti_data_cad.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATE);
		dti_data_cad.setTitle("Data Cadastro");
		dti_data_cad.setTextAlign(Alignment.LEFT);
		dti_data_cad.setValue(data);

		form_cadastro.setItems(tI_Codigo,
					tI_Nome,
					tI_Senha, 
					tI_confSenha,
					tI_NivelAcesso, 
					tI_TipoUsuario, 
					dti_data_cad);

		vl_cadastro.addMember(form_cadastro);
		abaCadastro.setPane(vl_cadastro);
		tabelaAbas.addTab(abaCadastro);


		
		
// *****************EVENTOS CADASTRO*****************
		btn_Limpar.addClickHandler(new ClickHandler() {
			@Override
			public void onClick(ClickEvent event) {
				limpaCamposCadastro();
			}
		});

		btn_Gravar.addClickHandler(new ClickHandler() {

			@Override
			public void onClick(ClickEvent event) {
				if (tI_Senha.getValueAsString().equals(tI_confSenha.getValueAsString())) {
//					SC.say(data.toString());
					usuarioServico.gravaUsuario(tI_Nome.getValueAsString(), 
						tI_Senha.getValueAsString(), 
						tI_NivelAcesso.getValueAsString(), 
						tI_TipoUsuario.getValueAsString(), 
						data.toString(), 
						resposta);
					limpaCamposCadastro();
				} else {
					SC.say("Senha nao corresponde");
			}
			}

		});

// ***************ABA CONSULTA***************
		abaConsulta = new Tab("Consulta");

		VLayout layout = new VLayout();

		DynamicForm form_consulta = new DynamicForm();
		form_consulta.setNumCols(6);
		layout.addMember(form_consulta);

		ti_codigo_pes = new TextItem();
		ti_codigo_pes.setTitle("Codigo");

		ti_nome_pes = new TextItem();
		ti_nome_pes.setTitle("Nome");

		dti_data_pes = new DateTimeItem();
		dti_data_pes.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATE);
		dti_data_pes.setTitle("Data Cadastro");
		dti_data_pes.setTextAlign(Alignment.LEFT);

		form_consulta.setItems(ti_codigo_pes, ti_nome_pes, dti_data_pes);

		ToolStrip menu_consulta = new ToolStrip();
		menu_consulta.setWidth("100%");

		ToolStripButton toolStripButton = new ToolStripButton("Pesquisar");
		toolStripButton.setIcon("/imagens/pesquisar.png");
		menu_consulta.addButton(toolStripButton);

		layout.addMember(menu_consulta);

		ListGrid listGrid = new ListGrid();
		layout.addMember(listGrid);
		abaConsulta.setPane(layout);
		tabelaAbas.addTab(abaConsulta);

// *******************ABA RELATORIO********************

		abaRelatorio = new Tab("Relatorio");
		// tabelaAbas.addTab(abaRelatorio);

// ****************TODAS AS ABAS******************
		addItem(tabelaAbas);

	} // FINAL DO CONSTRUTOR

	public void limpaCamposCadastro() {
		tI_Codigo.setValue("");
		tI_Nome.setValue("");
		tI_Senha.setValue(""); 
		tI_confSenha.setValue("");
		tI_NivelAcesso.setValue(""); 
		tI_TipoUsuario.setValue("");
	}
}